#include "name_pipes.h"

/**
 * 作为服务端：对管道文件进行读操作
 * （1）先创建一个管道文件
 * （2）然后以读的方式打开
 * （3）输出读取到的信息
 */

int main()
{
    //1、创建管道文件
    umask(0);
    int num=mkfifo(FILE_NAME,0666);
    if(num<0)
    {
        perror("mkfifo error");
        exit(2);
    }

    //2、然后以读的方式打开
    int fd=open(FILE_NAME,O_RDONLY);
    if(fd<0)
    {
        perror("open error");
        exit(2);
    }
    
    //3、打开后，定义缓冲区，用来存储读取到的数据
    char buffer[1024];
    while(1)
    {
        buffer[0]='\0';
        ssize_t r_num=read(fd,buffer,sizeof(buffer)-1);
        if(r_num>0)
        {
            //返回的是读取的字节数
            //末尾添加\0
            buffer[r_num]='\0';
            std::cout<<"client："<<buffer<<std::endl;
        }
        else if(r_num==0)
        {
            //读取结束
            std::cout<<"client stop send……"<<std::endl;
            break;
        }
        else
        {
            perror("read error");
            exit(0);
        }
    }
    close(fd);
    return 0;
}